#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
const int N = 15;
ll dp[N][N];
int num[N],now;                 //now：当前统计0~9的哪一个数字
ll dfs(int pos,int sum,bool lead, bool limit){    //pos：当前处理到第pos位
    ll ans = 0;
    if(pos == 0) return sum;    //递归到0位数，结束，返回
    if(!lead && !limit && dp[pos][sum]!=-1)  return dp[pos][sum];  //记忆化搜索
    int up = (limit ? num[pos] : 9);    //这一位的最大值，例如324的第3位是up = 3
    for(int i=0;i<=up;i++){                                         //下面以now=2为例：
        if(i==0 && lead)  ans += dfs(pos -1, sum,  true, limit&&i==up); // 计算000~099
        else if(i == now) ans += dfs(pos -1, sum+1,false,limit&&i==up); // 计算200~299
        else if(i != now) ans += dfs(pos -1, sum,  false,limit&&i==up); // 计算100~199
    }
    if(!lead && !limit) dp[pos][sum] = ans;       //状态记录：无前导0
    return ans;
}
ll solve(ll x){
    int len = 0;       //数字x有多少位
while(x){ 
num[++len] = x%10; 
x/=10;
}
    memset(dp,-1,sizeof(dp));
    return dfs(len,0,true,true);
}
int main(){
    ll a,b;    cin>>a>>b;
    for(int i=0;i<10;i++)   now = i, cout << solve(b)-solve(a-1)<<" ";  
    return 0;
}
